/**
 * 前端HTTP请求工具
 * 基于axios封装，提供统一的请求和响应处理
 * 包含token自动添加、错误统一处理等功能
 */

import axios from 'axios';
import { Message } from 'element-ui';

/**
 * 创建axios实例
 * 配置基础URL和超时时间
 */
const service = axios.create({
  baseURL: '/company', // API请求的基础URL，对应后端context-path
  timeout: 5000        // 请求超时时间（毫秒）
});

/**
 * 请求拦截器
 * 在发送请求前自动添加token到请求头
 */
service.interceptors.request.use(
  config => {
    // 从localStorage获取用户token
    const token = localStorage.getItem('token');
    if (token) {
      // 将token添加到请求头中，后端通过'token'字段获取
      config.headers['token'] = token;
    }
    return config;
  },
  error => {
    console.log(error);
    return Promise.reject(error);
  }
);

/**
 * 响应拦截器
 * 统一处理响应结果和错误信息
 */
service.interceptors.response.use(
  response => {
    const res = response.data;
    
    // 如果返回的状态码不是200，则判断为错误
    if (res.code !== 200) {
      // 显示错误消息
      Message({
        message: res.message || 'Error',
        type: 'error',
        duration: 5 * 1000
      });
      
      // 可以在这里添加更多错误处理逻辑，如401、403等状态码处理
      return Promise.reject(new Error(res.message || 'Error'));
    } else {
      // 请求成功，返回响应数据
      return response;
    }
  },
  error => {
    console.log('请求错误: ' + error); // 调试用
    
    // 显示网络错误消息
    Message({
      message: error.message,
      type: 'error',
      duration: 5 * 1000
    });
    
    return Promise.reject(error);
  }
);

// 导出配置好的axios实例
export default service; 